import datetime

from django.db import models


# Create your models here.
from django.utils import timezone


class Process(models.Model):
    '''工序表'''
    name = models.CharField(null=False, max_length=32, verbose_name="工序名称")  # 创建一个varchar(32)类型的字段，不为空
    status = models.IntegerField(null=False, default=1, verbose_name="状态")  # 状态，表示工序是否使用，1为正常，9为不使用即删除

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "工序表"  # 单数形式显示的字段
        verbose_name_plural = verbose_name  # 复数形式显示字段，默认admin后台显示复数形式


class SubProcess(models.Model):
    '''子工序表，一个工序中包含多个子工序'''
    name = models.CharField(null=False, max_length=32, verbose_name="子工序名称")
    process = models.ForeignKey(to="Process", on_delete=models.PROTECT, verbose_name="所属工序")

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "子工序表"  # 单数形式显示的字段
        verbose_name_plural = verbose_name  # 复数形式显示字段，默认admin后台显示复数形式


class DeviceType(models.Model):
    '''设备类型表'''
    typename = models.CharField(max_length=64, verbose_name="设备类型")
    status = models.IntegerField(null=False, default=1, verbose_name="状态")  # 状态，表示工序是否使用，1为正常，9为不使用即删除

    def __str__(self):
        return self.typename

    class Meta:
        verbose_name = "设备类型表"  # 单数形式显示的字段
        verbose_name_plural = verbose_name  # 复数形式显示字段，默认admin后台显示复数形式


class Device(models.Model):
    '''设备表'''
    name = models.CharField(max_length=64, verbose_name="设备名称")
    sn = models.CharField(max_length=32, null=False, verbose_name="设备编号")
    devicetype = models.ForeignKey(to="DeviceType", on_delete=models.PROTECT, verbose_name="设备类型")
    process = models.ForeignKey(to="Process", on_delete=models.PROTECT, verbose_name="工序")
    status = models.IntegerField(null=False, default=1, verbose_name="状态")  # 状态，表示工序是否使用，1为正常，9为不使用即删除

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "设备表"  # 单数形式显示的字段
        verbose_name_plural = verbose_name  # 复数形式显示字段，默认admin后台显示复数形式


class MachineHours(models.Model):
    '''机器机时表'''
    device = models.ForeignKey(to="Device", on_delete=models.PROTECT, verbose_name="设备名称")
    hours = models.FloatField(null=False, blank=False, verbose_name="机器机时")
    workdate = models.DateField(null=False, auto_now_add=True, blank=False, verbose_name="工作日期")

    class Meta:
        verbose_name = "机器机时表"
        verbose_name_plural = verbose_name


class Employees(models.Model):
    '''人员表'''
    PROPERTIES = (
        (1, '正式工'),
        (2, '临时工'),
        (3, '派遣工'),
        (4, '部门援助'),
    )
    STATUS = (
        (1, '在职'),
        (9, '离职'),
    )
    jobnumber = models.CharField(max_length=10, null=False, unique=True, verbose_name="员工工号")
    jobname = models.CharField(max_length=10, null=False, unique=True, verbose_name="员工姓名")
    process = models.ForeignKey(to="Process", on_delete=models.PROTECT, verbose_name="默认工序", related_name='employee')
    properties = models.IntegerField(verbose_name="性质", null=False, blank=False, choices=PROPERTIES, default=1)
    status = models.IntegerField(verbose_name="状态", null=False, blank=False, choices=STATUS, default=1)

    def __str__(self):
        return self.jobname

    def to_dict(self):
        return {
            'id': self.id,
            'jobnumber': self.jobnumber,
            'jobname': self.jobname,
            'process': self.process,
            'properties': self.properties,
            'status': self.status
        }

    class Meta:
        verbose_name = "人员表"  # 单数形式显示的字段
        verbose_name_plural = verbose_name  # 复数形式显示字段，默认admin后台显示复数形式


class EmployeeHours(models.Model):
    PROCESS_CHOICES = (
        ('1', '炼胶'), ('2', '涂胶'), ('3', '成型'), ('4', '二次加热'), ('5', '液体成型'), ('6', '研磨'), ('7', '静电'), ('8', '切割'),
        ('9', '自动机'), ('10', '机压'), ('11', '手工作业'), ('12', '冷冻'))

    '''人员工时表'''
    e_name = models.CharField(verbose_name="员工姓名",max_length=32)
    # employee = models.ForeignKey(to='Employees',on_delete=models.PROTECT,verbose_name="员工姓名",null=True)
    # process = models.CharField(max_length=32, verbose_name="工作工序", choices=PROCESS_CHOICES)
    e_process = models.CharField(max_length=32, verbose_name="工作工序")
    e_hours = models.FloatField(null=False, verbose_name="员工工时")
    # e_workday = models.DateTimeField(verbose_name="工作日期",default=timezone.now)   #为了保证在页面中，自动使用当前日期，必须设置默认值
    e_workday = models.DateField(verbose_name="工作日期")   #为了保证在页面中，自动使用当前日期，必须设置默认值

    class Meta:
        verbose_name = "工时表"
        verbose_name_plural = verbose_name
